const express = require('express')
const cors = require('cors')
const morgan = require('morgan')
require('./config/db')
const userRoutes = require('./routes/user')
const productRouter = require('./routes/product'); // 导入 product 路由
const farmerProductListRouter = require('./routes/farmerProductList');
const villageCollectiveRoutes = require('./routes/villageCollective')
const { PORT } = require('./config/constants')

const app = express()

// 中间件
app.use(cors({
  origin: 'http://localhost:5173', // Vite 默认端口
  credentials: true
}))
app.use(morgan('dev'))
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use('/api/products', productRouter) // 使用 product 路由
app.use('/img', express.static('public/img')); // 静态资源
// 测试路由
app.get('/api/test', (req, res) => {
  res.json({ message: '服务器正常运行' })
})

// 用户路由
app.use('/api/users', userRoutes)
app.use('/api', villageCollectiveRoutes)
app.use('/api/farmer-product-list', farmerProductListRouter);
// 404处理
app.use((req, res, next) => {
  res.status(404).json({
    success: false,
    message: '请求的资源不存在'
  })
})

// 错误处理
app.use((err, req, res, next) => {
  console.error('错误详情:', err)
  res.status(500).json({
    success: false,
    message: err.message || '服务器内部错误'
  })
})

// 启动服务器
const server = app.listen(PORT, '0.0.0.0', () => {
  console.log(`服务器运行在 http://localhost:${PORT}`)
})

server.on('error', (error) => {
  if (error.code === 'EADDRINUSE') {
    console.error(`端口 ${PORT} 已被占用`)
  } else {
    console.error('服务器启动错误:', error)
  }
}) 